
# 已知一个正方形类的对象有三个属性:
# 1. 边长: length_of_a_side
# 2. 周长: perimeter
# 3. 面积: area
# class Square:
#     def __init__(self, length_of_a_side):
#         self.__length_of_a_side = length_of_a_side
#     ...
# sq1 = Square(5)
# print('sq1的周长是', sq1.perimeter)  # 20
# print('sq1的面积是', sq1.area)  # 25
# sq1.area = 100
# print('sq1的边长是', sq1.length_of_a_side)  # 10
# print('sq1的周长是', sq1.perimeter)  # 40
# print('sq1的面积是', sq1.area)  # 100



# 已知一个正方形类的对象有三个属性:
# 1. 边长: length_of_a_side
# 2. 周长: perimeter
# 3. 面积: area
class Square:
    def __init__(self, length_of_a_side):
        self.__length_of_a_side = length_of_a_side

    # 边长
    @property
    def length_of_a_side(self):
        return self.__length_of_a_side
    @length_of_a_side.setter
    def length_of_a_side(self, length):
        self.__length_of_a_side = length
    # 周长
    @property
    def perimeter(self):
        return 4 * self.__length_of_a_side  # 由计算得到

    @perimeter.setter
    def perimeter(self, p):
        self.__length_of_a_side = p / 4  # 由周长计算出边长并保存

    # 面积
    @property
    def area(self):
        return self.__length_of_a_side ** 2
    @area.setter
    def area(self, area):
        self.__length_of_a_side = area ** (1/2)

sq1 = Square(5)
print('sq1的周长是', sq1.perimeter)  # 20
print('sq1的面积是', sq1.area)  # 25
sq1.area = 100
print('sq1的边长是', sq1.length_of_a_side)  # 10
print('sq1的周长是', sq1.perimeter)  # 40
print('sq1的面积是', sq1.area)  # 100


